1 //+------------------------------------------------------------------+
\r
3 //| Copyright © 2006, Luis Guilherme Damiani |
\r
4 //| http://www.damianifx.com.br |
\r
6 //+------------------------------------------------------------------+
\r
7 #property copyright "Copyright © 2006, Luis Guilherme Damiani"
\r
8 #property link "http://www.damianifx.com.br"
\r
10 #property indicator_buffers 3
\r
11 #property indicator_separate_window
\r
12 //#property indicator_chart_window
\r
14 #property indicator_color1 Red
\r
15 #property indicator_color2 LightBlue
\r
16 #property indicator_color3 Yellow
\r
18 //---- input parameters
\r
19 extern double alpha=0.07;
\r
20 //extern int maxbars=2000;
\r
21 extern double lag_signal2=9;
\r
22 //extern bool stochfish=true;
\r
23 //extern int stochfish_window=8;
\r
25 Price_Choice="----- Typical or Median --------------";
\r
26 extern bool is_median=true;
\r
32 double AuxBuffer[]; //Smooth
\r
35 //+------------------------------------------------------------------+
\r
36 //| Custom indicator initialization function |
\r
37 //+------------------------------------------------------------------+
\r
41 SetIndexStyle(0,DRAW_LINE);
\r
42 SetIndexBuffer(0,ind1);
\r
43 SetIndexStyle(1,DRAW_LINE);
\r
44 SetIndexBuffer(1,ind2);
\r
45 SetIndexStyle(2,DRAW_LINE);
\r
46 SetIndexBuffer(2,ind3);
\r
47 SetLevelValue(0,0.0);
\r
48 // SetLevelValue(1,-0.8);
\r
49 // ArrayInitialize(ind1,0.0);
\r
50 // ArrayInitialize(ind2,0.0);
\r
51 // ArrayInitialize(ind3,0.0);
\r
52 ArrayResize(AuxBuffer,Bars);
\r
53 // ArrayInitialize(AuxBuffer,0.0);
\r
54 alpha2=1/(lag_signal2+1);
\r
59 //+------------------------------------------------------------------+
\r
60 //| Custor indicator deinitialization function |
\r
61 //+------------------------------------------------------------------+
\r
69 //+------------------------------------------------------------------+
\r
70 //| Custom indicator iteration function |
\r
71 //+------------------------------------------------------------------+
\r
75 double pr0,pr1,pr2,pr3=0;
\r
77 int counted_bars=IndicatorCounted();
\r
79 //---- check for possible errors
\r
80 if(counted_bars<0) return(-1);
\r
81 int limit=Bars-counted_bars;
\r
82 // if(limit>maxbars)limit=maxbars;
\r
83 //if (limit>Bars-1)limit=Bars-1;
\r
85 for (int i = limit; i>=0;i--)
\r
89 pr0=(High[i]+Low[i])/2;
\r
90 pr1=(High[i+1]+Low[i+1])/2;
\r
91 pr2=(High[i+2]+Low[i+2])/2;
\r
92 pr3=(High[i+3]+Low[i+3])/2;
\r
96 pr0=(High[i]+Low[i]+Close[i])/3;
\r
97 pr1=(High[i+1]+Low[i+1]+Close[i+1])/3;
\r
98 pr2=(High[i+2]+Low[i+2]+Close[i+2])/3;
\r
99 pr3=(High[i+3]+Low[i+3]+Close[i+3])/3;
\r
102 AuxBuffer[i]= (pr0+2*pr1+2*pr2+pr3)/6;
\r
104 ind1[i]=MathPow(1-0.5*alpha,2)*(AuxBuffer[i]-2*AuxBuffer[i+1]+AuxBuffer[i+2])
\r
105 +2*(1-alpha)*ind1[i+1]
\r
106 -MathPow(1-alpha,2)*ind1[i+2];
\r
109 ind3[i]=alpha2*ind1[i]+(1-alpha2)*ind3[i+1];
\r
116 //+------------------------------------------------------------------+